////lambda表达式
//#include <iostream>
//#include <typeinfo>
//using namespace std;
//
//int Max(int x, int y) {
//	return x ? y ? x : y;
//}
//
//int main(void) {
//	int a = 10, b = 20;
//
//	Max(a, b);
//
//	/*[](int x, int y)->int {
//		return x > y ? x : y;
//	};*/
//	auto f = [](int x, int y)-> int {return x > y ? x : y; };
//	//编译器根据lambda表达式（1）生成一个类（2）类内定义函数操作符函数（3）返回这个类匿名对象
//	/*
//		clas Z4mainEUliiE_{
//		public:
//			operator()(int x,int y){
//				return x> y? x:y;
//			}
//		};
//		auto f = Z4mainEUliiE_{};
//	*/
//	cout << typeid(f).name() << endl;
//	cout << f(a, b) << endl;
//
//	//lambda表达式可以没有返回值类型，根据return判断
//	cout << [](int x, int y) {return x + y; }(a, b) << endl;
//	//等价于下面的
//	/*
//	class X{
//		public:
//			auto operators()(int x,int y)->decltype(x+y){
//				return x+y;
//			}
//	};
//	cout << X{}（a,b）<<endl;//x{}.operator()(a,b) << endl;
//	*/
//
//	//lambda表达式可以没有返回类型，也没有return语句，返回类型为void
//	[](int x, int y) {cout << x << ' ' << y << endl; }(a, b);
//	/*
//		class XX{
//		public:
//			void operator()(int x,int y){
//				cout << x << ' ' << y<<endl;
//			}
//		};
//		XX{}(a,b);//XX{}.operator()(a,b)
//	*/
//	//如果没有形参，可以省略不写
//	[] {cout << "无聊" << endl; };
//	/*
//		class XXXX{
//		public:
//			void operator(){
//				cout << "无聊" << endl;
//			}
//		};
//		XXXX{}();//XXXX().operator()()
//	
//	*/
//	return 0;
//}